package editor.cn;

//Roman numerals are represented by seven different symbols: I, V, X, L, C, D an
//d M. 
//
// 
//Symbol       Value
//I             1
//V             5
//X             10
//L             50
//C             100
//D             500
//M             1000 
//
// For example, 2 is written as II in Roman numeral, just two one's added togeth
//er. 12 is written as XII, which is simply X + II. The number 27 is written as XX
//VII, which is XX + V + II. 
//
// Roman numerals are usually written largest to smallest from left to right. Ho
//wever, the numeral for four is not IIII. Instead, the number four is written as 
//IV. Because the one is before the five we subtract it making four. The same prin
//ciple applies to the number nine, which is written as IX. There are six instance
//s where subtraction is used: 
//
// 
// I can be placed before V (5) and X (10) to make 4 and 9. 
// X can be placed before L (50) and C (100) to make 40 and 90. 
// C can be placed before D (500) and M (1000) to make 400 and 900. 
// 
//
// Given an integer, convert it to a roman numeral. 
//
// 
// Example 1: 
//
// 
//Input: num = 3
//Output: "III"
// 
//
// Example 2: 
//
// 
//Input: num = 4
//Output: "IV"
// 
//
// Example 3: 
//
// 
//Input: num = 9
//Output: "IX"
// 
//
// Example 4: 
//
// 
//Input: num = 58
//Output: "LVIII"
//Explanation: L = 50, V = 5, III = 3.
// 
//
// Example 5: 
//
// 
//Input: num = 1994
//Output: "MCMXCIV"
//Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
// 
//
// 
// Constraints: 
//
// 
// 1 <= num <= 3999 
// 
// Related Topics 数学 字符串 
// 👍 454 👎 0

public class IntegerToRoman{
    public static void main(String[] args) {
        Solution solution = new IntegerToRoman().new Solution();
        
    }

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String intToRoman(int num) {
        if (num <= 0) {
            return "";
        }

        StringBuffer result=new StringBuffer();
        while (num > 0) {
            if (num >= 1000) {
                num -= 1000;
                result.append("M");
            } else if (num >= 500) {
                if (num >= 900) {
                    num -= 900;
                    result.append("CM");
                } else {
                    num -= 500;
                    result.append("D");
                }
            } else if (num >=100) {
                if (num >= 400) {
                    num -= 400;
                    result.append("CD");
                } else {
                    num -= 100;
                    result.append("C");
                }
            } else if (num >= 50) {
                if (num >= 90) {
                    num -= 90;
                    result.append("XC");
                } else {
                    num -= 50;
                    result.append("L");
                }
            } else if (num >= 10) {
                if (num >= 40) {
                    num -= 40;
                    result.append("XL");
                } else {
                    num -= 10;
                    result.append("X");
                }
            } else if (num >= 5) {
                if (num == 9) {
                    num -= 9;
                    result.append("IX");
                } else {
                    num -= 5;
                    result.append("V");
                }
            } else {
                if (num == 4) {
                    num -= 4;
                    result.append("IV");
                } else {
                    num -= 1;
                    result.append("I");
                }
            }
        }
        return String.valueOf(result);
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}